import store from '../store'

// let { baseUrl } = require('./env.js').dev
let { baseUrl } = require('./env.js').prod

// 请求封装
function request(options = {}) {
  // 加入基础url
  options.url = `${baseUrl}/${options.url}`;
  const {
    success,
    fail,
  } = options;
	let path = window.location.pathname.split('/')[1];
  // 统一注入约定的header
  let header = Object.assign({
    'Authorization': uni.getStorageSync('token'),
    // 'custom-header': '/unite/' //自定义请求头信息,区分渠道
		'custom-header': path //自定义请求头信息,区分渠道
  }, options.header);

  return new Promise((res, rej) => {
    uni.request(Object.assign(
      {},
      options,
      {
        header,
        success(r){
          if (r.statusCode === 200) { // 成功的请求状态
            if (success) {
              success(r.data);
              return;
            }
            // 登录过期
            if (r.data.code === 401) {
              uni.showToast({
                title: '登录状态已过期，请重新登录',
                icon: 'none'
              });
              setTimeout(function () {
                store.dispatch("user/Logout").then(res => {
                  uni.redirectTo({
                    url: "/pages/my/login/login"
                  })
                })
              }, 2000);
              return
            }
            res(r.data);
          } else {
            const err = {
              msg: `接口错误（错误代码：${r.statusCode}）`,
              detail: r,
            };
            if (fail) {
              fail(err);
              return;
            }
            rej(err);
          }
        },
        fail(err) {
          if (fail) {
            fail(err);
            return;
          }
          rej(err);
        },
      },
    ));
  });
}

module.exports = { request }